package com.yunzhong.appointment.system.service;

import java.io.IOException;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.yunzhong.appointment.entity.Department;
import com.yunzhong.appointment.entity.Person;
import com.yunzhong.appointment.entity.Professional;
import com.yunzhong.appointment.entity.SysUser;
import com.yunzhong.appointment.util.PageData;

/**
 * @description 系统设置中人员模型层接口
 * @author 石洪刚
 * @time 2017年9月11日10:06:18
 *
 */
public interface SysPersonService {
	
	/**
	 * @description 查询人员信息
	 * @author 石洪刚
	 * @time 2017年9月11日09:34:15
	 * @param pd
	 * @return
	 */
	List<Person> listPerson(PageData pd);
	
	/**
	 * @description 根据主键查询医生
	 * @author 石洪刚
	 * @time 2017年8月22日00:05:26
	 * @param id
	 * @return
	 */
	Person getPersonById(String id);
	
	/**
	 * @description 增加或修改医生
	 * @author 石洪刚
	 * @time 2017年8月22日01:02:06
	 * @param doc
	 * @param picFile
	 * @throws IOException 
	 */
	void saveOrUpdatePerson(Person doc, MultipartFile picFile) throws IOException;
	
	/**
	 * @description 删除医生
	 * @author 石洪刚
	 * @time 2017年9月11日09:38:19
	 * @param ids
	 */
	void removePerson(String[] ids);
	
	/**
	 * @description 查询未关联用户
	 * @author 石洪刚
	 * @time 2017年9月12日10:47:45
	 * @return
	 */
	List<SysUser> listUserNotLinked();
	
	/**
	 * @description 查询科室信息
	 * @author 石洪刚
	 * @time 2017年9月12日10:48:19
	 * @return
	 */
	List<Department> listDepartment();
	
	/**
	 * @description 根据医生主键查询被关联用户
	 * @param id
	 * @return
	 */
	SysUser getLinkedUserByPpId(String id);
	
	/**
	 * @description 根据部门主键查询职务
	 * @author 石洪刚
	 * @time 2017年9月12日11:32:45
	 * @param departmentId
	 * @return
	 */
	List<Professional> listProfessionalByDeptId(String departmentId);
	/**
	 * 
	 * @methodName checkRoleDoc
	 * @description 判断用户是否有医生角色
	 * @author 石洪刚
	 * @time 2017年10月6日 下午8:21:15
	 * @param userList
	 */
	void checkRoleDoc(List<SysUser> userList);
	
	
}
